export interface EquipmentVO {
  /**
   * 主键
   */
  id: string | number;

  /**
   * 所属装置ID
   */
  sszz: number;

  /**
   * 设备名称
   */
  sbmc: string;

  /**
   * 设备位号
   */
  sbwh: string;

  /**
   * 设备主次：0主设备，1附属设备，2其他
   */
  sbzc: string;

  /**
   * 设备类型：0动设备，1静设备，2电气，3仪表
   */
  sblx: string;

  /**
   * 是否特种设备：0否，1是
   */
  tzsbNy: number;

  /**
   * 特种设备分类：0压力容器，1压力管道，2锅炉
   */
  tzsbfl: number;

  /**
   * 是否为安全附件：0否，1是
   */
  aqfjNy: number;

  /**
   * 安全附件分类：0安全阀，1爆破片，2紧急切断，3压力表，4液位计，5测温仪表，6易熔塞，7其他
   */
  aqfjfl: number;

  /**
   * 设备等级：0一般，1关键，2核心
   */
  sbdj: number;

  /**
   * 设备状态：0运行，1停用，2备用，3维修，4待修，5过期
   */
  sbzt: number;

  /**
   * 规格型号
   */
  ggxh: string;

  /**
   * 设备型号
   */
  sbxh: string;

  /**
   * 生产日期
   */
  scrq: string;

  /**
   * 使用年限
   */
  synx: string;

  /**
   * 安装位置
   */
  azwz: string;

  /**
   * 安装日期
   */
  azrq: string;

  /**
   * 启用日期
   */
  qyrq: string;

  /**
   * 维护保养周期
   */
  whbyzq: string;

  /**
   * 维护保养单位：0天，1周，2旬，3月，4季，5半年，6年
   */
  whbydw: string;

  /**
   * 责任人
   */
  zrr: string;

  /**
   * 联系方式
   */
  lxfs: string;
}

export interface EquipmentForm extends BaseEntity {
  /**
   * 主键
   */
  id?: string | number;

  /**
   * 所属装置ID
   */
  sszz?: number;

  /**
   * 设备名称
   */
  sbmc?: string;

  /**
   * 设备位号
   */
  sbwh?: string;

  /**
   * 设备主次：0主设备，1附属设备，2其他
   */
  sbzc?: string;

  /**
   * 设备类型：0动设备，1静设备，2电气，3仪表
   */
  sblx?: string;

  /**
   * 是否特种设备：0否，1是
   */
  tzsbNy?: number;

  /**
   * 特种设备分类：0压力容器，1压力管道，2锅炉
   */
  tzsbfl?: number;

  /**
   * 是否为安全附件：0否，1是
   */
  aqfjNy?: number;

  /**
   * 安全附件分类：0安全阀，1爆破片，2紧急切断，3压力表，4液位计，5测温仪表，6易熔塞，7其他
   */
  aqfjfl?: number;

  /**
   * 设备等级：0一般，1关键，2核心
   */
  sbdj?: number;

  /**
   * 设备状态：0运行，1停用，2备用，3维修，4待修，5过期
   */
  sbzt?: number;

  /**
   * 设备型号
   */
  sbxh?: string;

  /**
   * 生产日期
   */
  scrq?: string;

  /**
   * 使用年限
   */
  synx?: string;

  /**
   * 安装位置
   */
  azwz?: string;

  /**
   * 安装日期
   */
  azrq?: string;

  /**
   * 启用日期
   */
  qyrq?: string;

  /**
   * 维护保养周期
   */
  whbyzq?: string;

  /**
   * 维护保养单位：0天，1周，2旬，3月，4季，5半年，6年
   */
  whbydw?: string;

  /**
   * 责任人
   */
  zrr?: string;

  /**
   * 联系方式
   */
  lxfs?: string;
}

export interface EquipmentQuery extends PageQuery {
  /**
   * 所属装置ID
   */
  sszz?: number;

  /**
   * 设备名称
   */
  sbmc?: string;

  /**
   * 设备位号
   */
  sbwh?: string;

  /**
   * 设备主次：0主设备，1附属设备，2其他
   */
  sbzc?: string;

  /**
   * 设备类型：0动设备，1静设备，2电气，3仪表
   */
  sblx?: string;

  /**
   * 是否特种设备：0否，1是
   */
  tzsbNy?: number;

  /**
   * 特种设备分类：0压力容器，1压力管道，2锅炉
   */
  tzsbfl?: number;

  /**
   * 是否为安全附件：0否，1是
   */
  aqfjNy?: number;

  /**
   * 安全附件分类：0安全阀，1爆破片，2紧急切断，3压力表，4液位计，5测温仪表，6易熔塞，7其他
   */
  aqfjfl?: number;

  /**
   * 设备等级：0一般，1关键，2核心
   */
  sbdj?: number;

  /**
   * 设备状态：0运行，1停用，2备用，3维修，4待修，5过期
   */
  sbzt?: number;

  /**
   * 设备型号
   */
  sbxh?: string;

  /**
   * 生产日期
   */
  scrq?: string;

  /**
   * 使用年限
   */
  synx?: string;

  /**
   * 安装位置
   */
  azwz?: string;

  /**
   * 安装日期
   */
  azrq?: string;

  /**
   * 启用日期
   */
  qyrq?: string;

  /**
   * 维护保养周期
   */
  whbyzq?: string;

  /**
   * 维护保养单位：0天，1周，2旬，3月，4季，5半年，6年
   */
  whbydw?: string;

  /**
   * 责任人
   */
  zrr?: string;

  /**
   * 联系方式
   */
  lxfs?: string;

  /**
   * 日期范围参数
   */
  params?: any;
}

type elTagType = 'primary' | 'success' | 'info' | 'warning' | 'danger';

// 设备状态
export const equipmentStatusMap: Record<number, elTagType> = { 0: 'success', 1: 'danger', 2: 'primary', 3: 'info', 4: 'info', 5: 'warning' };
export const equipmentStatusKeyName: Record<number, string> = { 0: '运行', 1: '停用', 2: '备用', 3: '维修', 4: '待修', 5: '过期' };
// 设备主次
export const equipmentPriorityMap: Record<number, elTagType> = { 0: 'success', 1: 'primary', 2: 'info' };
export const equipmentPriorityKeyName: Record<number, string> = { 0: '主设备', 1: '附属设备', 2: '其他' };
// 设备类型
export const equipmentTypeMap: Record<number, elTagType> = { 0: 'success', 1: 'primary', 2: 'primary', 3: 'success' };
export const equipmentTypeKeyName: Record<number, string> = { 0: '动设备', 1: '静设备', 2: '电气', 3: '仪表' };
// 设备等级
export const equipmentGradeMap: Record<number, elTagType> = { 0: 'info', 1: 'primary', 2: 'success' };
export const equipmentGradeKeyName: Record<number, string> = { 0: '一般', 1: '关键', 2: '核心' };
// 是否特种设备
export const specialEquipmentMap: Record<number, elTagType> = { 0: 'danger', 1: 'success' };
export const specialEquipmentKeyName: Record<number, string> = { 0: '否', 1: '是' };
// 特种设备分类
export const specialEquipmentTypeMap: Record<number, elTagType> = { 0: 'success', 1: 'primary', 2: 'warning' };
export const specialEquipmentTypeKeyName: Record<number, string> = { 0: '压力容器', 1: '压力管道', 2: '锅炉' };
// 是否为安全附件
export const safetyAttachmentMap: Record<number, elTagType> = { 0: 'danger', 1: 'success' };
export const safetyAttachmentKeyName: Record<number, string> = { 0: '否', 1: '是' };
// 安全附件分类
export const safetyAttachmentTypeMap: Record<number, elTagType> = {
  0: 'success',
  1: 'danger',
  2: 'primary',
  3: 'info',
  4: 'info',
  5: 'warning',
  6: 'primary',
  7: 'info'
};
export const safetyAttachmentTypeKeyName: Record<number, string> = {
  0: '安全阀',
  1: '爆破片',
  2: '紧急切断',
  3: '压力表',
  4: '液位计',
  5: '测温仪表',
  6: '易熔塞',
  7: '其他'
};
// 维护保养单位
export const maintenanceUpkeepUnitMap: Record<number, elTagType> = {
  0: 'success',
  1: 'primary',
  2: 'success',
  3: 'primary',
  4: 'success',
  5: 'primary',
  6: 'success'
};
export const maintenanceUpkeepUnitKeyName: Record<number, string> = {
  0: '天',
  1: '周',
  2: '旬',
  3: '月',
  4: '季',
  5: '半年',
  6: '年'
};

export const getOptionsByKeyMap = (keyMap: Record<number, string>) => {
  const options = [];
  Object.keys(keyMap).forEach((key) => {
    options.push({
      label: keyMap[key],
      value: Number.parseInt(key)
    });
  });
  return options;
};
